import java.util.*;
//牛牛冲钻五
class Main{
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        int t = in.nextInt();

        for(int i=0;i<t;i++){
            int n = in.nextInt();
            int k = in.nextInt();
            String s = in.next();
            int flag=0;
            int ans=0;
            for(int j=0;j<n;j++){
                if(s.charAt(j)=='W'){
                    flag++;
                    if(flag>=3){
                        ans+=k;
                    }else{
                        ans++;
                    }
                }else if(s.charAt(j)=='L'){
                    ans--;
                    flag=0;
                }
            }
            System.out.println(ans);
        }
    }
}




//NC41 最长无重复子数组
public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
     *
     *
     * @param arr int整型一维数组 the array
     * @return int整型
     */
    public int maxLength (int[] arr) {
        int maxlen=Integer.MIN_VALUE;
        int start = 0;
        int end = 0;
        HashSet set = new HashSet<>();
        for(int i=0;i<arr.length;i++){
            if(!set.contains(arr[i])){
                set.add(arr[i]);
                end++;
                continue;
            }
            maxlen=Math.max(maxlen,end-start);
            while(true){
                if(arr[i]==arr[start]){
                    start++;
                    end++;
                    break;
                }
                set.remove(arr[start++]);
            }

        }
        maxlen=Math.max(maxlen,end-start);
        return maxlen;
    }
}




//重排字符串

class Main2 {
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        String s = in.next();

        int maxlen=0;
        char maxChar='0';
        int[] hash = new int[26];
        //找到出现次数最多的字符
        for(int i=0;i<s.length();i++){
            hash[s.charAt(i)-'a']++;
            if(hash[s.charAt(i)-'a']>maxlen){
                maxlen=hash[s.charAt(i)-'a'];
                maxChar=s.charAt(i);
            }
        }
        //如果出现次数最多的字符的次数超过n+1/2就输出no
        if(maxlen>((n+1)/2)){
            System.out.println("no");
        }else{
            System.out.println("yes");
            char[] ans = new char[n];
            int i=0;
            //将最多的字符填入ans中
//            while (hash[maxChar - 'a'] > 0) {
//                ans[i] = maxChar;
//                i += 2;
//                hash[maxChar - 'a']--;
//            }
            //错误的写法:这是因为这里是先取值，然后判断，最后在--
            //当hash[maxChar-'a']为0的时候，退出循环，此时他还会--,然后hash[maxChar-'a']就变为-1了
            //如果下面的代码不判断一下if((char)(j+'a')!=maxChar)，就会出错
            while((hash[maxChar-'a']--)!=0){
                ans[i] = maxChar;
                i+=2;
            }
            for(int j=0;j<26;j++){
                if((char)(j+'a')!=maxChar){
                    while((hash[j]--)!=0){
                        if(i>=n){
                            i=1;
                        }
                        ans[i] = (char)('a'+j);
                        i+=2;
                    }
                }
            }
            for(int j=0;j<n;j++){
                System.out.print(ans[j]);
            }
        }


    }
}